package com.inkFlow.book.domain;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.inkFlow.common.mybatis.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 小说对象 ink_book
 *
 * @author inkFlow
 * @date 2025-08-22
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ink_book")
public class InkBook extends BaseEntity {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 小说id
     */
    @TableId(value = "book_id")
    private Integer bookId;

    /**
     * 爬虫标识
     */
    private Integer crawlSourceId;

    /**
     * 爬虫小说id
     */
    private String crawlBookId;

    /**
     * 作品方向，1：男频，2：女频
     */
    private Integer workDirection;

    /**
     * 小说名称
     */
    private String bookName;

    /**
     * 小说简介
     */
    private String bookDesc;

    /**
     * 作者表id
     */
    private Integer authorId;

    /**
     * 作者名称
     */
    private String authorName;

    /**
     * 小说封面
     */
    private String coverUrl;

    /**
     * 点击量
     */
    private Integer visitCount;

    /**
     * 评论数
     */
    private Integer commentCount;

    /**
     * 总字数
     */
    private Integer wordCount;

    /**
     * 小说评分
     */
    private BigDecimal bookScore;

    /**
     * 小说更新状态，1：连载中；2：完结
     */
    private Integer updateStatus;

    /**
     * 书架状态，1：入库；2：上架
     */
    private Integer shelfStatus;

    /**
     * 审核状态，1：待审核；2：审核驳回；3：审核通过；4：删除待审核；5：已删除
     */
    private Integer applyStatus;

    /**
     * 审核结果描述
     */
    private String applyResult;

    /**
     * 最后一次的抓取时间
     */
    private Date crawlLastTime;

    /**
     * 最新章节id
     */
    private Integer lastChapterId;

    /**
     * 小说来源，1：自有；2：爬虫
     */
    private Integer bookSource;

    /**
     * 是否收费，1：免费，2：收费
     */
    private Integer vipStatus;

    /**
     * 删除标志，0：代表存在 1：代表删除
     */
    @TableLogic
    private String delFlag;


}
